class WaitTask implements Runnable {
    private Object locker;
    public WaitTask(Object locker) {
        this.locker = locker;
    }
    @Override
    public void run() {
      synchronized (locker){
      while (true){
          try {
              System.out.println("wait 开始");

              locker.wait();
              System.out.println("wait 结束");

          } catch (InterruptedException e) {
              e.printStackTrace();
          }
      }
      }
      }
    }
class NotifyTask implements Runnable{
    private Object locker;
    public NotifyTask(Object locker){
        this.locker=locker;
    }

    @Override
    public void run() {
        synchronized (locker){
            System.out.println("notifyt 开始");
            locker.notify();
            System.out.println("notifyt 结束");

        }

    }

}



public class waitTask {
    public static void main(String[] args) throws InterruptedException {
        Object locker = new Object();
        Thread t1 = new Thread(new WaitTask(locker));
        Thread t2 = new Thread(new NotifyTask(locker));
        t1.start();
        Thread.sleep(1000);
        t2.start();
    }
}